#ifndef EXAGONMAINWINDOW_H
#define EXAGONMAINWINDOW_H

#include <QMainWindow>

#include "projectslistmodel.h"

#include "datcapisaldi.h"
#include "outcapisaldi.h"
#include "datimpostazioniprogetto.h"
#include "exastatusbar.h"
#include "pfilelist.h"
#include "pfilelisttablemodel.h"

#include "dockwidgetfilelist.h"

namespace Ui {
class ExagonMainWindow;
}

class ExagonMainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit ExagonMainWindow(QWidget *parent = 0);
    ~ExagonMainWindow();

protected:
    void closeEvent(QCloseEvent *event);

private slots:

    // [DATCAPISALDI] Apre dialogo
    void on_actionAzioniSismicaSpettri_triggered();

    void on_actionReportingAzioniSismica_triggered();

    // Apre un progetto esistente
    void on_actionFileApri_triggered();
    // Apre un nuovo progetto
    void on_actionFileNuovo_triggered();
    // Apre un nuovo progetto
    void on_actionSalva_progetto_triggered();

    // Imposta i dati del progetto corrente
    void on_actionImpostazioniProgettoDati_Generali_triggered();

    void fileListChanged_sl();
private:

    Ui::ExagonMainWindow *ui;

    // Path dei progetti
    QString m_prj_path;
    QDir m_currentDir;

    // Dati della finestra Capisaldi
    DatCapisaldi* m_datCapisaldi;

    // Dati della finestra OutCapisaldi
    OutCapisaldi* m_outCapisaldi;

    // Dati della finestra del progetto
    DatImpostazioniProgetto* m_datImpostazioniProgetto;

    // Setting for APPLICATION
    QSettings* m_settingsApp;
    void m_readSettingsApp( void );
    void m_writeSettingsApp( void ) const;

    // Setting for USER
    QSettings* m_settingsUser;
    void m_readSettingsUser( void );
    QString m_INI_user_config_filename;

    // Create ProjectList Navi
    DockWidgetFileList* m_dockWidgetFileList;
             PFileList* m_pfilelist;

    ProjectsListModel* m_projectListModel; // Lista dei progetti

    //
    void m_updateWindowTitle(void);
    void m_updateActions(void);

    //
    ExaStatusBar* m_statusBar;
    void m_notifyMsg(QString msg);

    //
    void m_update();

    //
    void m_setupConnections();
};

#endif // EXAGONMAINWINDOW_H
